package ar.com.android.alco.providers;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import ar.com.android.alco.dbHelpers.SQLALCOHelper;
import ar.com.android.alco.entities.CategoriaAlimentos;

public class CategoriaAlimentosProvider {
	
	private static final String DB_COLUMN_0_NAME = "idCategoria";
	private static final String DB_COLUMN_1_NAME = "descripcion";

	private SQLiteDatabase database;
	private SQLALCOHelper dbHelper;
	private String[] allColumns = {DB_COLUMN_0_NAME, DB_COLUMN_1_NAME};
	
	public CategoriaAlimentosProvider(Context context) {
		dbHelper = SQLALCOHelper.getHelper(context);
		database = dbHelper.getWritableDatabase();
	}
		
	public long insertCategoriaAlimento(CategoriaAlimentos categoriaAlimentos)
	{
		ContentValues contentValues = new ContentValues();
		contentValues.put(DB_COLUMN_0_NAME, categoriaAlimentos.getIdCategoria());
		contentValues.put(DB_COLUMN_1_NAME, categoriaAlimentos.getDescripcion());
		
		long insertId = database.insert(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, null, contentValues);
		return insertId;
	}
	
	public boolean removeCategoriaAlimentos(Integer idCategoriaAlimentos)
	{
		int result = database.delete(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, DB_COLUMN_0_NAME + " = " + idCategoriaAlimentos, null);
				
		if(result > 0)            
			return true;        
		else            
			return false;
	}
	
	public boolean removeCategoriaAlimentos()
	{
		int result = database.delete(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, null, null);
				
		if(result > 0)            
			return true;        
		else            
			return false;
	}
		
	public long updateAlimento(CategoriaAlimentos categoriaAlimentos)
	{
		ContentValues contentValues = new ContentValues();
		contentValues.put(DB_COLUMN_1_NAME, categoriaAlimentos.getDescripcion());
		
		return database.update(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, contentValues, DB_COLUMN_0_NAME + " = " + categoriaAlimentos.getIdCategoria(), null);
	}
	
	public CategoriaAlimentos getCategoriaAlimento(Integer idCategoriaAlimentos)
	{
		try
		{
			Cursor cursor = database.query(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, allColumns, DB_COLUMN_0_NAME + " = " + idCategoriaAlimentos, null, null, null, null);
			cursor.moveToFirst();
			
			CategoriaAlimentos categoriaAlimentos = new CategoriaAlimentos();
			categoriaAlimentos.setIdCategoria(cursor.getInt(0));
			categoriaAlimentos.setDescripcion(cursor.getString(1));

			cursor.close();
			return categoriaAlimentos;
	
		}
		catch (Exception e) {
			return null;
		}		
	}
	
	public List<CategoriaAlimentos> getCategoriaAlimentos() {
		List<CategoriaAlimentos> lstCategoriaAlimentos = new ArrayList<CategoriaAlimentos>();
		
		Cursor cursor = database.query(SQLALCOHelper.DB_CATEGORIA_ALIMENTOS_TABLE_NAME, allColumns, null, null, null, null, null);
		cursor.moveToFirst();
		
		while (!cursor.isAfterLast()) {
			CategoriaAlimentos categoriaAlimentos = new CategoriaAlimentos();
			categoriaAlimentos.setIdCategoria(cursor.getInt(0));
			categoriaAlimentos.setDescripcion(cursor.getString(1));

			lstCategoriaAlimentos.add(categoriaAlimentos);
			cursor.moveToNext();
		}
		cursor.close();
		return lstCategoriaAlimentos;
	}
}
